var AppUserForm = function(_title, _userId) {
	return this.setup(_title, _userId);
};

AppUserForm.prototype.setup = function(_title, userId) {
	var _url = __ctxPath + '/system/treeByLevelDepartment.do?all=true';
	var depSelector = new TreeSelector('depTreeSelector', _url, '所属部门','appUser_depId', false);

	var userform = new Ext.form.FormPanel({
		id : 'AppUserForm',
		// title : _title,
		closable : true,
		iconCls : 'menu-customer',
		border : false, // 不要边框
		autoScroll : true,
		bodyStyle : "margin-top:5px;margin-left:5px; background-color: transparent;",
		labelAlign : "right",
		layout : 'table',
		autoScroll : true,
		buttonAlign : 'center',
		defaultType : "textfield",
		layoutConfig : {
			columns : 3
		},
		url : __ctxPath + '/system/saveAppUser.do',
		reader : new Ext.data.JsonReader({
					root : 'data'
				}, [{
							name : 'appUser.userId',
							mapping : 'userId'
						}, {
							name : 'appUser.username',
							mapping : 'username'
						}, {
							name : 'appUser.password',
							mapping : 'password'
						}, {
							name : 'employee.fullname',
							mapping : 'employee.fullname'
						}, {
							name : 'employee.email',
							mapping : 'employee.email'
						}, {
							name : 'employee.accessionTime',
							mapping : 'employee.accessionTime'
						}, {
							name : 'employee.attendWorkDate',
							mapping : 'employee.attendWorkDate'
						}, {
							name : 'appUser.employee.department.depId',
							mapping : 'employee.department.depId'
						}, {
							name : 'appUser.employee.department.depName',
							mapping : 'employee.department.depName'
						}, {
							name : 'employee.birthday',
							mapping : 'employee.birthday'
						}, {
							name : 'appUserStatus',
							mapping : 'status'
						}, {
							name : 'employee.sex',
							mapping : 'employee.sex'
						}, {
							name : 'employee.position',
							mapping : 'employee.position'
						}, {
							name : 'employee.officePhone',
							mapping : 'employee.officePhone'
						}, {
							name : 'employee.mobilePhone',
							mapping : 'employee.mobilePhone'
						}, {
							name : 'employee.fax',
							mapping : 'employee.fax'
						}, {
							name : 'employee.address',
							mapping : 'employee.address'
						}, {
							name : 'employee.zip',
							mapping : 'employee.zip'
						}, {
							name : 'employee.photo',
							mapping : 'employee.photo'
						}, {
							name : 'appUser.sectionCategory',
							mapping : 'sectionCategory'
						}, {
							name : 'employee.id',
							mapping : 'employee.id'
						}, {
							name : 'employee.accessionDate',
							mapping : 'employee.accessionDate'
						}, {
							name : 'employee.empCode',
							mapping : 'employee.empCode'
						}]),
		items : [{
			xtype : "panel",
			id : 'AppUserMustInfo',
			width : 230,
			height : 270,
			title : "基本信息(必填)",
			layout : 'form',
			defaultType : "textfield",
			defaults : {
				width : 150
			},
			labelWidth : 60,
			labelAlign : "right",
			hideLabels : false,
			bodyStyle : "padding-top:5px;",
			items : [{
						xtype : 'hidden',
						fieldLabel : '员工ID',
						name : 'appUser.userId',
						id : 'appUser.userId'
					}, {
						fieldLabel : '登录账号',
						name : 'appUser.username',
						id : 'appUser.username',
						maxLength : 15,
						allowBlank : false,
						blankText : '登录账号不能为空!'
					}, {
						fieldLabel : '登录密码',
						name : 'appUser.password',
						id : 'appUser.password',
						inputType : 'password',
						allowBlank : false,
						blankText : '登录密码不能为空!'
					}, {
						fieldLabel : '员工编号',
						name : 'appUser.employee.empCode',
						id : 'employee.empCode',
						allowBlank : false,
						blankText : '员工编号不能为空!',
						listeners : {
							// 当编辑或新增状态时，当焦点离开员工编号框时自动带出已存在的员工信息
							'change' : function(obj) {
								// 往编辑窗口中填充数据
								var edit = Ext.getCmp('AppUserForm');
								var vAppUserId = Ext.getCmp('appUser.userId').getValue();
								var vAppUserName = Ext.getCmp('appUser.username').getValue();
								var vAppUserPassword = Ext.getCmp('appUser.password').getValue();
									Ext.Ajax.request({
										url : __ctxPath + '/system/getByEmpCodeEmployee.do',
										params : {
											'employee.empCode' : obj.getValue()
										},
										success : function(response, option) {
											var appUser = eval("(" + response.responseText + ")");
											appUser = appUser.data[0];
											if(appUser.employee){
												Ext.Msg.alert('信息', '编号'+obj.getValue()+'已存在,请重新填写！');
												obj.setValue('');
											}
										},failure : function() {
											Ext.ux.Toast.msg('编辑', '载入失败');
											obj.setValue('');
										}
									});
								/*
								edit.form.load({
									url : __ctxPath
											+ '/system/getByEmpCodeEmployee.do',
									params : {
										'employee.empCode' : obj.getValue()
									},
									method : 'post',
									// waitMsg : '正在载入数据...',
									success : function(edit, o) {
										var appUser = Ext.util.JSON
												.decode(o.response.responseText).data[0];
										if(appUser.employee){
											// 载入部门信息
											Ext.getCmp('depTreeSelector').setValue(appUser.employee.department.depName);
											Ext.getCmp('appUser.userId').setValue(vAppUserId);
											Ext.getCmp('appUser.username').setValue(vAppUserName);
											Ext.getCmp('appUser.password').setValue(vAppUserPassword);
										}
									},
									failure : function() {
										Ext.ux.Toast.msg('编辑', '载入失败');
									}
								});*/

							}
						}

					}, {
						fieldLabel : '员工姓名',
						name : 'appUser.employee.fullname',
						id : 'employee.fullname',
						allowBlank : false,
						blankText : '员工姓名不能为空!'
					}, {
						fieldLabel : '入职日期',
						xtype : 'datefield',
						format : 'Y-m-d',
						name : 'appUser.employee.accessionDate',
						id : 'employee.accessionDate',
						allowBlank : false,
						blankText : '入职日期不能为空!'
					}, {
						fieldLabel : '出生日期',
						xtype : 'datefield',
						format : 'Y-m-d',
						name : 'appUser.employee.birthday',
						id : 'employee.birthday',
						allowBlank : false,
						blankText : '出生日期不能为空!'
					}, {
						fieldLabel : '性别',
						xtype : 'combo',
						hiddenName : 'appUser.employee.sex',
						id : 'employee.sex',
						mode : 'local',
						editable : false,
						triggerAction : 'all',
						store : [['1', '先生'], ['0', '女士']],
						value : '1'
					}, {
						fieldLabel : '状态',
						id : 'appUserStatus',
						hiddenName : 'appUser.status',
						xtype : 'combo',
						mode : 'local',
						editable : false,
						triggerAction : 'all',
						store : [['1', '激活'], ['0', '禁用']],
						value : 1
					}, {
						fieldLabel : '标志',
						id : 'mark',
						name : 'mark',
						xtype : 'hidden',
						value : 2
					}, {
						xtype : 'hidden',
						name : 'appUser.employee.id',
						id : 'employee.id'
					}]
		}, {
			xtype : "panel",
			width : 230,
			height : 270,
			title : "扩展信息(选填)",
			layout : 'form',
			defaultType : 'textfield',
			labelWidth : 60,
			defaults : {
				width : 150
			},
			hideLabel : false,
			bodyStyle : "padding-top:5px;",
			items : [depSelector,// 所属部门
					{
						xtype : 'hidden',
						name : 'appUser.employee.department.depId',
						id : 'appUser_depId'
					}, {
						fieldLabel : '职位',
						name : 'appUser.employee.position',
						id : 'employee.position'
					}, {
						fieldLabel : '办公电话',
						name : 'appUser.employee.officePhone',
						id : 'employee.officePhone'
					}, {
						fieldLabel : '移动电话',
						xtype : 'numberfield',
						name : 'appUser.employee.mobilePhone',
						id : 'employee.mobilePhone'
					}, {
						fieldLabel : '传真',
						name : 'appUser.employee.fax',
						id : 'employee.fax'
					}, {
						fieldLabel : '家庭住址',
						name : 'appUser.employee.address',
						id : 'employee.address'
					}, {
						fieldLabel : '邮编',
						xtype : 'numberfield',
						name : 'appUser.employee.zip',
						id : 'employee.zip'
					}]
		}, {
			xtype : 'panel',
			title : '用户角色',
			width : 355,
			height : 270,
			colspan : 2,
			items : [{
				xtype : 'itemselector',
				id : 'AppUserRoles',
				name : 'AppUserRoles',
				bodyStyle : "padding-left:5px;",
				fromLegend : '',
				width : 345,
				imagePath : __ctxPath + '/ext3/ux/images/',
				multiselects : [{
					id : 'chooseRoles',
					title : '可选角色',
					width : 160,
					height : 260,
					// SimpleStore 有可能 在Ext 3.0 以后的版本 换成
					// ArrayStore,更新版本时请注意
					store : new Ext.data.SimpleStore({
								autoLoad : true,
								baseParams : {
									userId : userId
								},
								url : __ctxPath
										+ '/system/chooseRolesAppUser.do',
								fields : ['roleId', 'roleName']
							}),
					displayField : 'roleName',
					valueField : 'roleId'
				}, {
					id : 'selectedRoles',
					name : 'selectedRoles',
					title : '已有角色',
					width : 160,
					height : 260,
					store : new Ext.data.SimpleStore({
						autoLoad : true,
						baseParams : {
							userId : userId
						},
						url : __ctxPath + '/system/selectedRolesAppUser.do',
						fields : ['roleId', 'roleName']
							// ,data:[-2,'abc']
						}),
					tbar : [{
						text : '清除所选',
						handler : function() {
							Ext.getCmp('AppUserForm').getForm()
									.findField('AppUserRoles').reset();
						}
					}],
					displayField : 'roleName',
					valueField : 'roleId'
				}]

			}]

		}],
		buttons : [{
			text : '保存',
			iconCls : 'btn-save',
			handler : function() {
				var userform = Ext.getCmp('AppUserForm');
				if (userform.getForm().isValid()) {
					userform.getForm().submit({
						waitMsg : '正在提交用户信息',
						success : function(userform, o) {
							Ext.ux.Toast.msg('操作信息', '保存成功！');
							var userview = Ext.getCmp('AppUserGrid');
							if (userview != null) {// 假如员工列表不为空,则重载数据
								userview.getStore().reload({
											start : 0,
											limit : 25
										});
							}
							Ext.getCmp('AppUserForm').getForm().reset();
							Ext.getCmp('chooseRoles').getStore().reload();
							Ext.getCmp('appUser.username').getEl().dom.readOnly = false;
							Ext.getCmp('resetPassword').hide();
							Ext.getCmp('appUser.password').show();
						},
						failure : function(userform, o) {
							Ext.ux.Toast.msg('错误信息', o.result.msg);
						}
					});
				}
			}
		}, {
			text : '修改密码',
			id : 'resetPassword',
			hidden : true,
			iconCls : 'btn-password',
			handler : function() {
				new ResetPasswordForm(Ext.getCmp('appUser.userId').getValue());
			}
		}]

	});

	return userform;
};
